<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script>
      // 浅拷贝只拷贝一层，更深层次对象级别的只拷贝引用

      var obj = {
        id: 1,
        name: "andy",
        msg: {
          age: 18,
        },
        color: ["pink", "red"],
      };
      var o = {};
      //   for (var k in obj) {
      //     o[k] = obj[k];
      //   }
      //   o.msg.age=20;
      //   console.log(o);

      //   Object.assign(o, obj);
      //   console.log(o);
      //   o.msg.age=20;

      // 深拷贝拷贝多层，没一级别的数据都会拷贝。
      function deepCopy(newobj, oldobj) {
        for (var k in oldobj) {
          var item = oldobj[k];
          // 判断这个值是否是数组
          if (item instanceof Array) {
            newobj[k] = [];
            deepCopy(newobj[k], item);
          } else if (item instanceof Object) {
            // 判断这个值是否是对象
            newobj[k] = {};
            deepCopy(newobj[k], item);
          } else {
            // 属于简单数据类型
            newobj[k] = item;
          }
        }
      }
      deepCopy(o, obj);
      var arr = [];
      console.log(o);
      console.log(oarr instanceof Object);
    </script>
  </head>
  <body></body>
</html>
